package com.company;


import java.util.Arrays;
import java.util.Scanner;

//用于输入一个数字，先3n+1，若是偶数，则/2.直到 数字为1.
//并统计该过程中，所有数字0~9出现的次数。 观察是否满足本福特定律
public class Main {

    public static void main(String[] args) {
        System.out.println("输入一个数字：");
        Scanner in = new Scanner(System.in); int i = in.nextInt();
        intcount ii= new intcount(); //调用 intcount类，该类用于统计输入变量i数字中，各0~9数字个数。
        int arrtemp[] =new int[10]; //定义一个临时数组，用于存放循环计算0~9数字个数
        arrtemp=arrplus(arrtemp,ii.count(i)); //0~9数字累计
        System.out.println("yout input is:"+i);
        System.out.println("arrtemp:"+ Arrays.toString(arrtemp));
        int step=0; //用于统计 计算次数


        while (i > 1){
            i=i*3+1;   //算法3i+1
            step++;
            arrtemp=arrplus(arrtemp,ii.count(i)); //0~9数字累计
            System.out.println("n*3+1= "+i);
            while ( i % 2 == 0 ) //偶数判断
            {
                i=i/2; //偶数则 /2
                step++;
                arrtemp=arrplus(arrtemp,ii.count(i)); //0~9数字累计
                System.out.println("n/2 = "+i);
            }
        }
        System.out.println("共计算次数："+ step);
        System.out.println("arrtemp:"+ Arrays.toString(arrtemp));
        System.out.println("arr-sci:"+ Arrays.toString(arrsci(arrtemp)));
    }


    // arrplus 函数用于2个数组相加。
    public static int[] arrplus(int[]a,int[]b){
        int[] c =new int[10];
        for (int i=0;i<10;i++){
            c[i]=a[i]+b[i];
        }
        return c;
    }

    // arrsci用于统计 0~9数组中占比。

    public static double[] arrsci(int []a ){
        double[] n =new double[10];
        int arrsum=0;  //求和数组中的总数
        for (int i=0;i<10;i++){
            arrsum=arrsum+a[i];
        }
        for (int i=0;i<10;i++){
            n[i]=(float)a[i] / arrsum;  //计算0~9 分别占比
        }
        return n;

    }
}
